home *** CD-ROM | disk | FTP | other *** search
/ E.M.Computergraphic Phase 4 / Phase 4 - Desktop Video Dreams (E. M. Computergraphic)(1996).iso / utilities / jacosub / jscripts.readme < prev    next >
Text File  |  1996-01-02  |  34KB  |  643 lines

  1. JACOsub 1.5 SCRIPT FILE FORMAT SPECIFICATION
  2. ============================================
  3.  
  4. Here is the complete JACOsub script file format specification.
  5. It's not complicated (unless you want it to be) and quite flexible.
  6. Check out the sample script (demo.js) that came with this software;
  7. it demonstrates many of the things you can do with a script.
  8.  
  9.  
  10. Format Conventions
  11. ------------------
  12.  
  13. 1.  Space characters (white space) may consist of spaces or tabs.  Any line
  14.     in a script file may contain any amount of white space in front of,
  15.     behind, or in between parameters or words.
  16.  
  17. 2.  A line cannot be more than 511 characters in length.
  18.  
  19. 3.  Lines in the file may be either blank lines, compiler commands, or
  20.     timing lines for the script.  All these are explained below.
  21.  
  22. 4.  BLANK LINES or lines containing white space only:  These are ignored.
  23.  
  24. 5.  COMPILER COMMANDS:  Any line where # is the first non-space character
  25.     is treated as a compiler command.  The command is indicated by the next
  26.     character (upper or lowercase) following the #.  Some commands have
  27.     arguments, which are assumed to begin with the next non-whitespace
  28.     characters following the command.  Any parameters shown here in square
  29.     brackets [] are optional.  The commands are:
  30.  
  31.       space   Comment.  The line will be ignored.  Example:
  32.               # This is a comment.
  33.  
  34.       D[n] xxxx   Change some directive defaults (see the Directives
  35.               section below), as in
  36.               #DVB8C10    or    #d3 hr50vmf2    or    #d9JLJBC
  37.               This command affects only those lines following it.  Scripts
  38.               may contain as many #D commands as you like.
  39.  
  40.               There are 10 default directives available for you to set.
  41.               Specifying #D is the same as #D0 -- this sets the general
  42.               overall default directive when a title line contains no
  43.               directive or when just the D directive is present.  The
  44.               directives D1 - D9 may be set for situations when you need
  45.               a shorthand way to represent a long complicated directive
  46.               string in many places in your script.  Directives D0 - D9
  47.               are initially all identical, according to your DIRECTIVE
  48.               setting in JACOsub.cfg.
  49.  
  50.       Fn <fontname.font> <size> [CLEAN or QUICK&DIRTY]
  51.               This command sets font <n> to <fontname.font> which is <size>
  52.               pixels high.  CLEAN or QUICK&DIRTY indicate the rendering
  53.               mode for the font, and if omitted will default to CLEAN.
  54.               This works the same as the FONT setting in JACOsub.cfg (see
  55.               JACOsub.doc for a complete explanation).  The n argument may
  56.               range from 0 to 9 if the software has been registered,
  57.               otherwise n may range from 0 to 3.  Font settings affect the
  58.               entire script.  #F commands should be specified before any
  59.               timed lines in your script.
  60.               Example: #F 2 Diamond.font 20 quick&dirty
  61.  
  62.       I <time> <filename>
  63.               Include another script file <filename> into the current
  64.               script, offsetting the second script's start time by <time>.
  65.  
  66.               This command is useful, for example, if you are subtitling a
  67.               series of TV shows having subtitles for credits and ending
  68.               song lyrics.  Rather than importing and/or re-timing the same
  69.               sequences over and over again for each episode, you need only
  70.               time the song lyrics once and the credits once, with the times
  71.               starting at zero, and save these two scripts as separate
  72.               files.  When your "main" script includes these other scripts,
  73.               they will be incorporated properly into the main script to
  74.               start at the proper time (which is <time> added to the first
  75.               time event in the included script), and any overlapping time
  76.               ranges will be interwoven properly.
  77.  
  78.               <time> is specified in the form H:MM:SS.FF, where H is an
  79.               hours digit, M is a minutes digit, S is a seconds digit, and
  80.               F is a fractional-second digit.  The units of F are determined
  81.               by the #T command (below), and default to 30 units/second if
  82.               the #T command was omitted (that is, the FF digits are SMPTE
  83.               units ranging from 00 to 29.  The included script may in turn
  84.               contain its own, possibly different, #T command, and also its
  85.               own #Include commands.  <time> always offsets the "includee"
  86.               relative to the beginning of the "includer," taking into
  87.               account the "includer's" offset if the "includer" was itself
  88.               included by some other script.
  89.  
  90.               <filename> may be any valid path + file name.  <filename> can
  91.               specify a complete path; if no path is specified then JACOsub
  92.               will look in the default scripts directory, which you can set
  93.               in JACOsub.cfg  If you omit the extension in the filename,
  94.               then the program will include the script with the most recent
  95.               time-stamp, among the extensions .js, .tts, .pjs, or .tim
  96.               (.jsc, .pan, or .sub files won't be considered).
  97.  
  98.               Any occurrences of #F, #P, #Q, #R, and #S in an included
  99.               script will be ignored.  These commands work only in the
  100.               primary script, and they affect all included scripts.  The
  101.               effects of #D and #T commands are passed down into included
  102.               scripts, but these commands inside an included script affect
  103.               only that script and others IT might include; they have no
  104.               effect on the higher-up "calling" scripts.
  105.  
  106.               Example: #I 0:21:44.16 scripts:kor/kor-credits.js
  107.  
  108.       Pn r g b = Palette setting.
  109.               This sets the red, green, and blue intensities for color
  110.               register n, to r, g, and b, respectively.  This command may
  111.               be specified anywhere in the file, but the setting will be
  112.               used for the entire script.  Use intensities of 14 or 15 with
  113.               caution, as these are stronger than normal video signals, and
  114.               can result in color bleeding when using in your genlocked
  115.               video signal.  Examples:
  116.               #P1 14 14 6
  117.               #p 3 0 13 0
  118.  
  119.       Qn      Quantize.  This command has the effect of eliminating
  120.               timing gaps between subtitles of less than n/100 seconds
  121.               (regardless of the units specified by the #T command).
  122.               Default is #Q0.  Example:  With #t30 and #q4 specified, any
  123.               time event less than 4/100 seconds (about one 1/30 second
  124.               unit) earlier than another time event will be rounded up to
  125.               the more recent event.  This is of questionable usefulness.
  126.  
  127.       Rn      Ramp time.  If you play a pre-timed script, and discover a
  128.               time drift, then use this command.  The parameter n is the
  129.               number of seconds of drift over the entire script.  Script
  130.               timings will be adjusted appropriately according to the value
  131.               of n.  A positive  value will lengthen the total script
  132.               running time, and a negative value will shorten the total
  133.               script running time.  The default value is #R0.  Examples:
  134.               #R-3.6 will shorten the script running time 3.60 seconds.
  135.               #R .92 will lengthen the script running time 0.92 seconds.
  136.  
  137.       Sn      Shift time.  This is useful to correct for human error
  138.               delays.  The parameter n is the number of seconds to shift
  139.               each time event in the script.  A positive value will delay
  140.               each time, and a negative value will advance each time.
  141.               0 to -0.2 seconds is about right for human errors in timing.
  142.               The default value is #S0.  Example:
  143.               #S -0.2 will cause all events to occur .2 seconds sooner than
  144.               usual.
  145.  
  146.       Tn      Time units per second.  The default is SMPTE units
  147.               of 30 counts/second, as in #T30.  If your script is in units
  148.               1/100 second units or PAL units, you must say so with the
  149.               appropriate command, before the subtitle text begins.
  150.               Example:  #t 100
  151.  
  152. 6.  TIMING LINES for the script may occur in any order.  They look similar
  153.     to this:
  154.  
  155.     H:MM:SS.FF H:MM:SS.FF directive {comment} text {comment} more text...
  156.  
  157.     Here's what all those things are:
  158.  
  159.     The first field is the time when the subtitle is to appear on the
  160.     screen.  The normal default is SMPTE format (that is, FF can range from
  161.     00 to 29).  Use the #T command (described above) to change units.
  162.     IMPORTANT: The FF digits represent time units, NOT fractions of a
  163.     second.  There is a difference.  For example, if you use #T10 to
  164.     specify 1/10 second time units, then a time such as 0:00:00.60 would be
  165.     illegal (and result in an error) because it specifies 60 time units!
  166.     0:00:00.6 or 0:00:00.06 or even 0:00:00.00006 would be correct for this
  167.     case -- 6 UNITS are specified, not 6 tenths of a second.
  168.  
  169.     The second field is the time when the subtitle is to disappear.
  170.  
  171.     The next field is the directive.  It is optional.  If you leave it out,
  172.     the program will default to standard subtitling form (all text centered
  173.     at the bottom of the screen depending on how you have your global
  174.     default directive set up), and the text MUST begin with a non-alphabet
  175.     character {such as a comment}.  Directives are explained fully in the
  176.     Directives section below.  The first non-whitespace character following
  177.     the directive is assumed to be the beginning of the subtitle text.
  178.  
  179.     The {comment} is considered a part of the subtitle text, but it is
  180.     ignored by the software.  Use it for character names or keywords.  A
  181.     comment must be enclosed in braces.  Comments may appear anywhere
  182.     within the text of a subtitle.  If you really want to to display a left
  183.     brace, precede it with a backslash like so: \{.  Right braces will be
  184.     interpreted as a literal character or close of a comment, whichever
  185.     seems appropriate.  If a whitespace character immediately follows a
  186.     comment closing brace, then that first whitespace character will be
  187.     ignored.  Any other kind of following character will be considered part
  188.     of the subtitle text, and used.  Comments in the text are especially
  189.     useful when translating foreign films -- we use them to list possible
  190.     translations of phrases we are not yet sure about.
  191.  
  192.     The "text" and "more text" fields are what gets displayed.  There are
  193.     several special codes that you can put inside the text (CASE IS
  194.     IMPORTANT HERE ONLY):
  195.  
  196.     \n   Newline.  This is like a carriage return.  A line containing this
  197.          code will be split into two.  Each of these new fragments will
  198.          then be word-wrapped separately unless you turn wordwrapping off
  199.          (see the W directive below).  Useful for general formatting.
  200.          Multiple \n codes may be concatenated to create blank lines.
  201.          Example:  Hello!\n\nHow are you?{blank line separating the two}
  202.  
  203.     \{   Display a left brace.  Left braces are normally used to indicate
  204.          the beginning of a comment.
  205.  
  206.     \~   Display a tilde.  Tildes are normally used to create "hard"
  207.          spaces (see below).
  208.  
  209.     \\   Display a backslash.  Backslashes are normally used to denote
  210.          these special codes.
  211.  
  212.     \N   Normal.  All text appearing after this code will be displayed in
  213.          "normal" style.  This is typically the default, unless you have
  214.          the style (S) directive set to something other than normal.
  215.  
  216.     \I   Italics.  Display all text appearing after this code in italics.
  217.          Example:  \IHello!\N\nHow are you?{Hello is in italics}
  218.  
  219.     \B   Boldface.  This one isn't particularly useful, but go ahead if
  220.          you feel like it.
  221.  
  222.     \U   Underline.  This is virtually useless for large color text.
  223.  
  224.     \Cn  Color n.  The text following this code will be displayed using
  225.          face color n.  n is a hexadecimal digit; it may take the values
  226.          0-9 or A-F (or a-f).  Typically, when using the font supplied with
  227.          this software on a 2-bitplane display, only colors 3 and 1 are
  228.          useful.  See the C directive below for some caveats about colors.
  229.  
  230.     THE LAST 5 CODES ABOVE AFFECT ONLY ONE TIMING LINE; their effects do
  231.     not carry over into other lines.  These codes override any directives.
  232.     The \I, \B, and \U codes are mutually exclusive:  You can have bold
  233.     text or italic text, but you cannot create text that is BOTH bold and
  234.     italic.  See the demo script file (demo.js) for good examples on usage.
  235.  
  236.     Leading or trailing space in subtitle text will be ignored.  If you
  237.     want to encode a true space on the ends of some text, use a tilde (~).
  238.     It will be displayed as a space in a title.  To actually display a
  239.     tilde, precede it with a backslash: \~.  Tildes may also be used to
  240.     create "hard" spaces; they will be displayed as spaces but the text
  241.     will not be word-wrapped on these spaces.
  242.  
  243.     White space between line arguments may consist of any amount of spaces
  244.     or tabs.  Tabs inside the subtitle text will be converted to spaces.
  245.  
  246.  
  247. Directives
  248. ----------
  249.  
  250. The directive is a string that determines the subtitle's position, font,
  251. style, color, and so forth.  The directive string consists of character
  252. codes, each beginning with an alphabet character followed by arguments made
  253. up of other alphabet characters and numbers.  Directives may contain any of
  254. the following codes, in any order.  The directives may be uppercase or
  255. lowercase.  Like the text codes above, directives only affect a SINGLE
  256. timing line; their effects do not carry over into other lines.  Any
  257. parameters shown here in square brackets [] are optional.
  258.  
  259. Vertical positioning group:
  260.  
  261.     VB[n]  Bottom.  Position last line at the bottom (default).  The offset
  262.            from the bottom of screen n is optional  - it says how many
  263.            raster lines to offset from the physical bottom-of-viewport.  VB
  264.            by itself is the same as VB16 (in the original distribution of
  265.            this software).  The default value of n can be changed using the
  266.            DIRECTIVE setting in JACOsub.cfg, or with the #D command.
  267.  
  268.     VM     Middle.  Equal blank space above and below the text.
  269.  
  270.     VT[n]  Top.  Position the title with the first line at the top.  The
  271.            offset n is optional - as with VB, VT by itself is the same as
  272.            VT16 in the original distribution of this software.
  273.  
  274.     VLn    line n. Position subtitle starting at text line n (the height
  275.            of a line depends on the font you use).  n=0 for top line.
  276.  
  277.     VPn    Pixel n. Position subtitle so that the font baseline of the
  278.            first line of text is n pixels from the top of the viewport.
  279.            You need to know your font's baseline position for this
  280.            directive to be of any use.
  281.  
  282.     VU     Continue this line directly Underneath the previous one.  This
  283.            is useful if you have to display more text than your editor will
  284.            allow on a line.  You can also use it to create interesting
  285.            effects when a line with the VU directive is timed so that it's
  286.            not on the same display as the previous line.  For example,
  287.            suppose you had a single line that used the VM directive.
  288.            Normally it would be perfectly centered vertically on the screen.
  289.            However, if a VU line follows it, both are positioned as if they
  290.            were a block of lines to be centered on the screen together; i.e.
  291.            the VM line will appear slightly above center and the VU line
  292.            will appear slightly below center, regardless of when they are
  293.            individually displayed.  Had VB been used instead of VM, the
  294.            first line would have appeared 1 text line higher than bottom,
  295.            just enough to make room for the second line.
  296.  
  297. Horizontal positioning group:
  298.  
  299.     HLn    Left margin.  Set left margin at a position that is n% of the
  300.            the screen width.  Default is HL1 (1% from left edge).
  301.  
  302.     HRn    Right margin.  Set the right margin at a position that is n% of
  303.            the screen width.  Default is HL99 (1% from right edge).  The
  304.            right margin MUST be greater than the left margin.
  305.  
  306. Text justification group (related to horizontal positioning):
  307.  
  308.     JC     Center.  Text is centered within H constraints (normal default).
  309.  
  310.     JL     Left.  Align left edge of text at the HLn margin position.
  311.  
  312.     JR     Right.  Align the right edge of text at the HRn margin position.
  313.  
  314. Block justification group (related to horizontal positioning):
  315.  
  316.     JBC    Justify block center.  Because of word-wrapping, the width of a
  317.            text block will never occupy the full width specified in your
  318.            margin settings.  This directive positions the imaginary
  319.            rectangle occupied by the text in the center of your margin
  320.            settings, regardless of the text justification directives.  For
  321.            example, the JL directive by itself might produce the following
  322.            effect (the | character indicates margin boundaries):
  323.  
  324.            | The quick brown fox                      |
  325.            | jumped over the lazy dog.                |
  326.  
  327.            but the JL directive together with JBC will preserve the text
  328.            justification but center the block of text between the margins:
  329.  
  330.            |        The quick brown fox               |
  331.            |        jumped over the lazy dog.         |
  332.  
  333.     JBF    Justify block full (default).  Text will be positioned according
  334.            to whatever text justification directives are in effect, using
  335.            the full width specified by the current margin settings.
  336.  
  337.     JBL    Justify block left.  Position the text block at the left margin.
  338.  
  339.     JBR    Justify block right.  Position the text block so that the right
  340.            edge is at the right margin.
  341.  
  342. Word wrapping group (related to horizontal positioning):
  343.  
  344.     W0     Disable automatic word wrapping.  This may result in your text
  345.            not fitting within the position constraints defined with H & V.
  346.            There is really NO reason at all why you would want to turn off
  347.            word wrapping; you can wrap words manually with the \n code
  348.            whether word wrapping is on or off.  This directive is here just
  349.            for the sake of completeness.
  350.  
  351.     W1     Automatic "smart" word wrapping (default).  Even if a your text
  352.            contains hard return codes, the separate substrings will be word-
  353.            wrapped if necessary.  This word wrapping mode uses a "smart"
  354.            algorithm that attempts to minimize the area of the screen
  355.            occupied by the title.  In this mode, you will never see a line
  356.            wrapped as shown (the | characters indicate margin boudaries):
  357.  
  358.            | The quick brown fox jumped over the lazy |
  359.            |                   dog.                   |
  360.  
  361.            Instead, the W1 alghorithm will attempt to minimize the text
  362.            area without using any extra lines, resulting in:
  363.  
  364.            |           The quick brown fox            |
  365.            |        jumped over the lazy dog.         |
  366.  
  367.            This is easier for the viewer to read.  Same margins, same
  368.            number of lines, but the lines are more equal in length.
  369.  
  370.     W2     Automatic "stupid" word wrapping.  If you are disconcerted by
  371.            words not completely filling the horizontal margin space, and
  372.            you don't mind having a single word hanging by itself on the last
  373.            line (as in the first W1 example above), then use this directive.
  374.            This is the standard text-editor wordwrap algorithm, which makes
  375.            no attempt at aesthetics.  Why anybody would want to use this is
  376.            beyond me, but here it is.  \n codes behave the same as with W1.
  377.  
  378. Font group:
  379.  
  380.     Fn     Use font n, where n is a number from 0 to 9 (JACOsub loads
  381.            four fonts, which you can specify in the file JACOsub.Config).
  382.            The usual default font is 0, which is what you should use as
  383.            your "primary" font.  Fonts 4-9 are unavailable if the software
  384.            is unregistered.
  385.  
  386.     FQ     Quick&Dirty text.  Text color 3 is always quick.  Other colors
  387.            must normally be rendered one character at a time to avoid
  388.            interference between the shadow and face color when the font
  389.            characters overlap when rendered (like the JACOsub font).  This
  390.            interference happens because of a fault in the way the Amiga
  391.            renders text.  The FQ directive forces all text on a line to be
  392.            rendered in quick mode as if it were color 3.  This is useful
  393.            for speeding things up if your font does not have overlapping
  394.            portions (such as TurboTitle's fonts).
  395.  
  396.     FC     Clean rendering.  Only color 3 will be rendered fast, other
  397.            colors will be rendered so that the face color is not disturbed.
  398.            You can use this directive to negate, on a single line, a global
  399.            FF directive set using the #D command, or to override a
  400.            QUICK&DIRTY setting in JACOsub.cfg.
  401.  
  402.            The demo script demo.js tricks JACOsub into generating "slow"
  403.            clean text in the foreground display so you can see how it is.
  404.            If you are curious to see how the Amiga messes up color 1 text
  405.            if it's displayed the quick way, run the demo after inserting
  406.            the global command #DFQ at the top of the file demo.js before
  407.            you play the demo.
  408.  
  409.     FD     Default text rendering.  Rendering will be "quick" or "clean"
  410.            depending on how your font was set up in JACOsub.cfg.  This
  411.            directive is useful for overriding a #DFC or #DFF command.
  412.  
  413.     FOn    Generate an outline around the font, n pixels wide.  Color 2
  414.            (JACOsub's outline color) is used to generate the outline.  This
  415.            directive is useful for transforming a plain mono-color Amiga
  416.            font into a nice titling font, especially when combined with the
  417.            FS (font shadow) directive.  Recommended value for n is 2, which
  418.            produces a nice flicker-free outline.  n must be less than 127.
  419.            The default value is zero.
  420.  
  421.            WARNING:  Generating outlines can slow the program down
  422.            considerably!  It is recommended that you use this directive
  423.            only with QUICK&DIRTY font rendering, preferably with mono-color
  424.            fonts.
  425.  
  426.     FSdn   Generate a font shadow, taking into account any existing font
  427.            outline, in direction d, and n pixels deep.  Color 2 (JACOsub's
  428.            shadow color) is used to generate the shadow.  The direction d
  429.            is specified as compass directions: N, S, E, W, NW, NE, SW, SE.
  430.            Good values to use for the shadow depth n are 2 - 5.  The
  431.            warning about font outlines above applies here also.
  432.  
  433.            Example: FSSE3 produces a shadow similar to the JACOsub 29-
  434.            pixel font, with the shadow extending down and to the right.
  435.  
  436. Style group (related to font group - may also be set with text codes):
  437.  
  438.     SN     Normal style (typical default).
  439.  
  440.     SI     Italic.
  441.  
  442.     SB     Bold (using the JACOsub font, this doesn't look good with colors
  443.            other than color 3).
  444.  
  445.     SU     Underline (ugly!  Not recommended).
  446.  
  447. Color group (related to font group - CFn may also be set with text codes):
  448.  
  449.     CFn    Use color register n for the face color of the font.  JACOsub
  450.            assumes that all color fonts use bitplane 0 (i.e. color 1) for
  451.            the face color, and bitplane 1 (i.e. color 2) for the shadow/
  452.            outline.  THIS IS IMPORTANT!  JACOsub will generate text
  453.            differently depending on the color selected (see FF above).
  454.            The foreground color may also be set using the \Cn code inside
  455.            the text.
  456.  
  457.     CBn    Use color register n for the background color.  The display
  458.            will be cleared to this color prior to building the text.  If
  459.            two lines share the same display, and they have different
  460.            background colors specified, the screen will be cleared using
  461.            the latest NON-ZERO background color that occurs for that
  462.            display.  In other words, non-zero colors override the default
  463.            zero (transparent) background color.
  464.  
  465.     CSn[:s[:c]] This causes text to appear inside a shaded rectangle.  The
  466.            rectangle will be large enough to contain the text with a margin
  467.            of n pixels on all sides.  The shading is user-defined (with the
  468.            SHADEPATTERN setting in JACOsub.cfg) if s=0, or solid if s=1.
  469.            Color c will be used for the rectangle.  The style (s) and color
  470.            (c) paramters are optional; not setting them uses the defaults,
  471.            normally s=0, c=2 (user-defined, black).
  472.  
  473.            Setting n=0 disables the shading.  We suggest using n=8 or more.
  474.            Only ONE shaded background rectangle will appear on the screen.
  475.            JACOsub will attempt to create a SINGLE box which contains ALL
  476.            text that uses the CS directive.  If two shading directives for
  477.            the same time range conflict, one of them will be used, but
  478.            predicting WHICH one is impossible!   The normal default setting
  479.            is CS0:0:2, which can be changed using the #D command or the
  480.            DIRECTIVE setting in JACOsub.cfg.
  481.  
  482.            Notes:  Setting VB0 will mean that bottom-positioned text is as
  483.            low as it will go, therefore no shading can appear below it.
  484.            You should set the VB directive so that there is room for the
  485.            shading rectangle to extend below the text.  Also, VB text will
  486.            be repositioned slightly higher when the running clock is
  487.            displayed during play, but shade boxes will NOT be repositioned.
  488.  
  489. Genlock group (for Digital Creations' SuperGen only; others later):
  490.  
  491.     GBn[Tm] Move the background slider control to n% saturation over a time
  492.            period of m/60 seconds of time.  n may range from 0 to 100.  If
  493.            time specifier is omitted, it defaults to 0 (i.e. instant).
  494.            Example:  GB63T120 slides the background fader to 63% saturation
  495.            in 2 seconds (120/60 seconds).
  496.  
  497.     GGn[Tm] Move the graphics slider control to n% saturation  over a time
  498.            period of m/60 seconds of time.
  499.  
  500.         >> DO NOT USE THE G DIRECTIVES WITH THE GLOBAL #D COMMAND OR IN
  501.            JACOsub.Config, or the genlock will be have control signals sent
  502.            to it at every time event.
  503.  
  504. IFF group (for loading IFF files)
  505.  
  506.       IL <ILBM file name> [<x offset %> <y offset %>]
  507.            Load and display an IFF ILBM file for the time interval
  508.            specified by the start and stop time.  When this directive
  509.            appears, JACOsub assumes that the remainder of the line is
  510.            information about the file, NOT title text.  The file name must
  511.            follow the directive string.  The position to display the image,
  512.            specified as percent of screen width and height from the center,
  513.            can be specified in the next two fields.  These position
  514.            coordinates default to 0 0 if they are omitted, which results in
  515.            the picture being centered on the screen.  The picture may be
  516.            positioned to extend beyond the display edge.
  517.  
  518.            Any IFF ILBM picture or brush may be specified.  As many as
  519.            40 images may be loaded onto a single screen.  This enables you
  520.            to create several small brushes and display them all at once, in
  521.            different areas of the screen.
  522.  
  523.            CAVEATS (READ CAREFULLY!):
  524.            1.  You need at least AmigaDOS 2.0 to use this directive.  Under
  525.                1.3 and below, this directive is ignored.
  526.            2.  You will not be informed if a file is too big to fit in
  527.                memory.  If this happens, the file will simply not load.
  528.            3.  If the IFF file contains more bitplanes than the JACOsub
  529.                video buffers, the EXTRA BITPLANES WILL BE IGNORED.  You may
  530.                change the number of JACOsub's bitplanes in JACOsub.cfg.
  531.                If you have JACOsub set for a 4-color (2-bitplane) screen,
  532.                and you try to load in a 16-color (4-bitplane) picture, you
  533.                will lose 2 biplanes of information, and the picture will
  534.                look strange when it appears.
  535.            4.  All pictures are treated as IFF brushes.  Therefore, your
  536.                picture, once loaded, will use JACOsub's color palette.  THE
  537.                PICTURE'S OWN COLOR PALETTE WILL BE IGNORED.  Create your
  538.                graphics using the same palette you use with JACOsub or the
  539.                picture will look strange when it appears.
  540.            5.  JACOsub attempts to load the IFF files as they are needed.
  541.                This can cause a video switch delay if a time event occurs
  542.                while a file is loading.  Keep your IFF images on a fast
  543.                hard disk, or better yet, in RAM:.  If you do not have
  544.                sufficient memory, then do not use this directive!
  545.  
  546. Default group (when you don't need a directive)
  547. Because all of the above directives are optional, there is one other set of
  548. directives that may be used when you do not wish to specify any:
  549.  
  550.     D or D0   Default.  To be used if no other directives are used.  You
  551.            don't even need this directive at all, if your text begins with
  552.            a non-alphabetic character (such as a {comment}, number, etc.).
  553.  
  554.            Specifying D (or nothing) will use the program's default
  555.            settings.  The default directive for JACOsub is normally
  556.  
  557.            HL1HR99VT16VB16JCJBFF0FDFO0FSSE0SNCF3CB0CS0:0:2W1
  558.  
  559.            which you can change in the file JACOsub.Config, or with a #D
  560.            command at the top of your script.
  561.  
  562.            Confused?  Here they are spaced out:
  563.  
  564.            HL1 HR99 VT16 VB16 JC JBF F0 FD FO0 FSSE0 SN CF3 CB0 CS0:0:2 W1
  565.  
  566.            The Genlock directives should NEVER be specified globally, nor
  567.            in JACOsub.Config.
  568.  
  569.     Dn     The directives D1 - D9 may be defined with the commands
  570.            #D1 - #D9.  You can use these "default" directives as shorthand
  571.            for more complex directives that you may need in many places.
  572.            If you put two D directives in the same directive string, the
  573.            latest one will be used, and any previous directives ignored.
  574.  
  575. If a directive string contains conflicting information, the information
  576. occurring last will be used.  For example, VTD will cause VT to be ignored
  577. in favor of the default.  In the directive CF10JLCF3, CF10 will be ignored
  578. in favor of CF3.  Naturally, any directive beginning with D is unaffected
  579. by the D.  In the long default directive above, you can see VT16VB16.  This
  580. serves to set the top-of-screen offset to 16 for later, and then says that
  581. now the default vertical positioning will be 16 pixels from the bottom of
  582. the viewport.
  583.  
  584. Sample Lines
  585. ------------
  586.  
  587. These 4 lines all have the same effect.  Note that any spaces after the
  588. directive and the first space after comments are ignored.
  589.  
  590. 0:00:10.11 0:00:12.00 D  {fudo-ikiteru} It's alive!
  591. 0:00:10.11 0:00:12.00 D  {fudo-ikiteru}It's alive!
  592. 0:00:10.11 0:00:12.00 D  It's alive!{line doesn't start with a comment}
  593. 0:00:10.11 0:00:12.00    {fudo-ikiteru} It's alive!{starts with a comment}
  594.  
  595. If you want leading/trailing spaces, all of these lines will do the same
  596. thing (put two spaces in front of and after the text):
  597.  
  598. 0:00:10.11 0:00:12.00 D  ~~{fudo-ikiteru} It's alive! ~
  599. 0:00:10.11 0:00:12.00 D  {fudo-ikiteru}~~It's alive!~~
  600. 0:00:10.11 0:00:12.00 D  {fudo-ikiteru} ~~It's alive!~~
  601. 0:00:10.11 0:00:12.00 D ~ It's alive!~~
  602. 0:00:10.11 0:00:12.00 ~~{fudo-ikiteru} It's alive! ~
  603. 0:00:10.11 0:00:12.00  {fudo-ikiteru}~ It's alive!~~
  604. 0:00:10.11 0:00:12.00  {fudo-ikiteru} ~~It's alive!~~
  605. 0:00:10.11 0:00:12.00  {fudo-ikiteru}   It's alive!~~
  606.  
  607. THE FOLLOWING LINE IS BAD.  It needs either a directive after the timing
  608. numbers, or a comment to indicate that subtitle text follows the timing
  609. numbers.  Any alphabet character (A-Z, a-z) following the timing numbers
  610. MUST be part of a directive.
  611.  
  612. 0:00:10.11 0:00:12.00  It's alive!
  613.  
  614. For the next line, use color 1 for the font face color, start the
  615. subtitle at the top of the screen and leave the other defaults alone,
  616. and cause one word to be displayed in italics:
  617.  
  618. 0:02:23.23 0:02:25.01 cf1vt {thug1-nani} Whaddaya \Imean\N, ``please?''
  619.  
  620. Note:  Normal quotation marks ("like this") may be used, but using a
  621. double grave and a double apostrophe, as in the line above, looks more
  622. professional on the screen.  Just make sure that the grave looks like an
  623. upside-down apostrophe in your font, and that both characters occupy a
  624. narrow space.  The JACOsub fonts are designed this way.
  625.  
  626. Additional note (THIS IS ONE OF THE BIG FEATURES OF JACOsub):
  627. Timings may overlap!  The software will handle overlapping text displays
  628. properly, but you must be sure to position your subtitles so that these
  629. separate text events do not physically overlap on the screen.  You can
  630. arrange timed lines in any order you want, separate overlapped events
  631. into groups, or whatever.  The program will handle it.
  632.  
  633. Credits
  634. -------
  635.  
  636. The original JACOsub format was dreamed up by Alex Matulich and Daric
  637. Koslowski, before any code was ever written for JACOsub.  Yes, this was the
  638. second step!  (The first was to create the fonts.)  Beta testers and users
  639. have been very helpful in expanding and improving the specification into
  640. what it is today.  User feedback has played a large role in the development
  641. of the software and the script format.
  642.  
  643.